import {
  reactive/** ←可以把一个对象变成响应式的*/
  , effect /** ←effect里使用的变量如果发生变化,这个effect会默认重新执行*/
  , computed /** ←计算属性*/
  , ref /** ←*/

  //watchEffect 基于effect, 使用了批量更新策略
} from './reactivity';

const state = reactive({name: 'ahhh', age: 123, arr:[1,2,3]});

// watchEffect、renderEffect都基于此↓ (相当于vue2.x的watcher
effect(() => {
  // console.log(state.name);

  console.log(JSON.stringify(state.arr)); /** ←stringify调用时,内部嵌套的属性的访问器都会被访问一遍*/

  console.log(state.a); /** ←只要effect里get了这个属性,无论是否原本state里设置没有,这个属性都会被定义为响应式的*/
});

// state.name = 'ahhh2';

state.arr.push(4);
//[1,2,3,4]
state.arr[0] = 100;
//[100,2,3,4]

state.a = 100;
